import Hilo from 'hilojs';
import chess from "@/src/chess/Chess.js"
import util from "@/src/util/Util.js"
import helper from "@/src/util/Helper.js"
import Ui from "@/src/component/Ui.js"

let chessboard;
let current_camp;
// 开始下棋
// 参数阵营 r红方，b黑方
let start = (camp) => {
	if(camp != 'r' && camp != 'b'){
		alert("阵营必须是r或者b")
	}
	current_camp = camp;
	
	console.info("开始游戏");
	// 启动ui
	Ui.initUI(() => {
		chessboard = Ui.getChessboard();
		console.info("棋盘初始化完毕");
		let pieces = chess.initData();
		let allPieces = pieces.allPieces;
		
		// 给棋盘中放入所有棋子
		chessboard.pieces = allPieces;
		// 并刷新渲染棋子
		chessboard.refresh();
		
		allPieces.forEach((pie,index) => {
			let uiPiece = chessboard.getPieceUIByCode(pie.code);
			if(util.getPieceCamp(pie.code) == current_camp){
				// 对当前阵营棋子，绑定棋子的点击事件，点击后选中棋子
				uiPiece.on(Hilo.event.POINTER_START, function(e) {
					e.eventTarget.selected();
					chessboard.markPosition(e.eventTarget.piece.coo[0],e.eventTarget.piece.coo[1])
					let moveAblePoint = chess.moveAblePoint(chessboard.pieces, pie.code);
					chessboard.markWayPoint(moveAblePoint, () => {
						console.log("点击了路径点");
						// TODO 去移动棋子到可用的点
						chessboard.clearMark();
						chessboard.clearWayPoint();
					});
					
					//e.eventTarget.move(e.eventTarget.code, e.eventTarget.coo);
				});
			}else{
				uiPiece.on(Hilo.event.POINTER_START, function(e) {
					// 取消绑定任何事件
				});
			}
		});
		
	});
	
	
	
	// 开始摆放棋子，但现在有问题是棋子的坐标是从左下角为0点为坐标的，棋盘是左上角为0点开始计算的，
	// 我们初始化棋子的时候要注意这个点，

	// // 将所有棋子创建一个棋子容器
	// piecesContainer = new PiecesContainer({
	// 	pieces : allPieces,
	// 	chessboard: chessboard,
	// 	sourceQueue: queue
	// });
	// // 将棋子容器放入棋盘
	// chessboard.addChild(piecesContainer);

}

// // 选中棋子
// let selectedPiece = function(code) {
// 	// 获取棋子的可移动点位(包括吃掉棋子)

// 	let moveAblePoint = chess.moveAblePoint(chessboard.pieces, code);
// 	// 需要描点，描点需要棋子的主题提供
// 	chessboard.preMove(code, moveAblePoint, movePiece);
// }
// // 移动棋子
// let movePiece = function(code, coo) {

// 	chessboard.move(code, coo);
// 	try {
// 		util.setPieceCoo(chessboard.pieces, util.getPiece(chessboard.pieces, code), coo);
// 	} catch (e) {
// 		alert(e);
// 		chessboard.refresh();
// 	}
// }







			
			

// /**
// 	 * 将一个棋子移动到某个位置
// 	 * @param {Object} code 要移动的棋子
// 	 * @param {Object} coo 要移动的棋子位置，非uiCoo
// 	 */
// 	move: function(code, coo) {
// 		let p = this.getChildById(code);
// 		// 这个直接让程序给吃掉的code

// 		let target = util.getPieceByCoo(this.pieces, coo);
// 		let targetPoint;
// 		if (target != null && target != undefined) {
// 			targetPoint = this.getChildById(target.code);
// 		}
// 		let uiCoo = this.getUiCoo(coo);
		
// 		this.cancelPreMove();
// 		let that = this;
// 		p.move(uiCoo[0], uiCoo[1], function() {
// 			if (targetPoint != undefined) {
// 				targetPoint.removeFromParent();
// 			}
			
// 			// 标记移动前后的两个点
// 			that.markPosition(uiCoo);
// 		});
// 	},
// 	/**
// 	 * 点击棋子的动作，也就是选中棋子
// 	 * @param {Object} code
// 	 * @param {Object} moveAblePoint
// 	 * @param {Object} move 移动棋子的事件 move(code,coo)
// 	 */
// 	preMove: function(code, moveAblePoint, move) {

// 		this.cancelPreMove();

// 		let p = this.getChildById(code);
// 		let uiMoveAblePoint = [];
// 		if (moveAblePoint != undefined) {

// 			moveAblePoint.forEach((coo, index) => {
// 				uiMoveAblePoint.push({
// 					coo: coo,
// 					uiCoo: this.getUiCoo(coo)
// 				});
// 			});
// 		}

// 		p.preMove(uiMoveAblePoint, move, function() {
// 			// 没有可移动的位置的回调
// 			console.log("没有可移动的点");
// 		});
// 	},
// 	cancelPreMove: function() {
// 		for (let i = 0; i < this.getNumChildren(); i++) {
// 			try {
// 				this.children[i].cancelPreMove();
// 			} catch (e) {}
// 		}
// 		// 遍历执行 清理方法
// 	},


export default {
	start
}